export type RetryOptions = {
    /**
     对请求失败进行重试的次数

     @default 2
    */
    limit?: number

    /**
     允许重试的 HTTP 方法

     @default ['GET', 'PUT', 'HEAD', 'DELETE', 'OPTIONS', 'TRACE']
     */
    methods?: string[]

    /**
     允许重试的 HTTP 状态码

     @default [408, 413, 429, 500, 502, 503, 504]
    */
    statusCodes?: number[]

    /**
     允许配合 `Retry-After` 头部进行重试的 HTTP 状态码

     @default [413, 429, 503]
    */
    afterStatusCodes?: number[]

    /**
     最大重试次数

     @default 3
    */
    maxRetryAfter?: number

    /**
     每次重试的延迟上限（单位：毫秒）
	 例如，要限制延迟，可以将 `backoffLimit` 设置为 1000

	 默认情况下，延迟按以下方式计算：

	 ```
	 0.3 * (2 ** (attemptCount - 1)) * 1000
	 ```

	 delay 延迟呈指数增长

     @default Infinity
    */
    backoffLimit?: number

    /**
     一个延迟计算函数，用于根据 `attemptCount` 计算重试之间的延迟时间

     @default (attemptCount: number) => 0.3 * (2 ** (attemptCount - 1)) * 1000
    */
    delay?: (attemptCount: number) => number
}